﻿using System.Windows;
using System.Windows.Controls;
using System.Windows.Controls.Primitives;
using WPFTestSolution.Pages.Controls.ContentControls.ButtonBases.ToggleButtons;

namespace WPFTestSolution.Pages.Controls.ContentControls.ButtonBases {
    /**
     * https://www.bilibili.com/video/BV1bV411A7Eq?p=31
     * 031-ToggleButton基类
     * https://www.wpfsoft.com/2023/08/23/1247.html
     *
     * 因为ToggleButton作为CheckBox（复选框）和RadioButton（单选框）的基类，
     * 我们在学习CheckBox和RadioButton之前要先了解一下这个基类。
     *
     * ToggleButton基类提供了两个属性和三个事件
     * 
     * IsThreeState属性为true表示控件支持3个状态，
     * IsChecked属性为true表示当前控件已被选中。
     * Checked事件表示选中时引发的事件，
     * Unchecked事件表示从选中状态改为未选状态时引发的事件，
     * Indeterminate事件表示不确定状态时引发的事件
     */
    public partial class _31_ToggleButton_Page : Page {
        public _31_ToggleButton_Page() {
            InitializeComponent();
            this.Title = "031-ToggleButton基类(: ButtonBase)";

            this.ToggleButton.Click += (sender, args) => {
                //System.Windows.Controls.Primitives.ToggleButton
                string name = sender.GetType().ToString();
                if (sender is ToggleButton) {
                    ToggleButton toggleButton = sender as ToggleButton;
                    // string name = toggleButton.Name; //ToggleButton
                    bool isThreeState = toggleButton.IsThreeState;
                    bool? isChecked = toggleButton.IsChecked;
                    MessageBox.Show($"name = {name}\nisThreeState={isThreeState}\nisChecked={(isChecked == null ? "null" : isChecked.ToString())}");
                }
            };
        }
    }
}